import urllib.request
url = "https://www.baidu.com"

#url的组成
#(1)协议:http/https
#https = http + ssl,安全性更高
#(2)主机
#(3)端口号
#http端口号: 80
#https端口号: 443
#mysql端口号: 3306
#oracle端口号: 1521
#redis端口号: 6379
#mongodb端口号: 27017
#(4)路径  (5)参数   (6)锚点

#http://www.baidu.com/baidu?tn=34046034_10_dg&ie=utf-8&wd=%E9%BE%99%E7%8E%89%E6%B6%9B
#http/https     www.baidu.com      端口号        路径        参数
#   协议              主机           80/443      baidu       tn=及后面参数           锚点

response = urllib.request.urlopen(url)
content = response.read().decode("utf-8")
#print(content)
#爬取内容不完整,原因是因为User Agent
#User Agent:简称UA,中文名为用户代理,是一个特殊字符串头,使得服务器能够识别用户使用的操作系统及版本,CPU类型,浏览器及版本
#浏览器渲染引擎,插件等
#语法:request = urllib.request.Request()
#获取UA方式:
#打开浏览器,在浏览器界面中点击检查,在检查中选择Network项,刷新浏览器页面,选择对应的域名并在headers中找到UA项,UA项后面的
#值即为当前UA
#使用UA时应将其放入一个字典

headers = {"User-Agent":
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:126.0) Gecko/20100101 Firefox/126.0"}


#请求对象的定制
#request = urllib.request.Request(url,headers)
#Request方法,传入url和headers,返回一个request类型的对象
#request = urllib.request.Request(url,request)
#报错,原因其未指定传入的参数类型,导致执行过程出错,如需正确执行则应规定传入的参数的类型,原因是因为编译器会将headers当做data
request = urllib.request.Request(url = url,headers = headers)
response = urllib.request.urlopen(request)
content = response.read().decode("utf-8")
print(content)